Method and system for managing interactive communications campaigns with call pacing

ABSTRACT

A Web-based hosted system through which business entities create and manage communications campaigns. The system carries out a communications campaign on behalf of a client. A campaign is a series of calls to a contact list using one or more sub-campaigns. A sub-campaign associates a list of contacts, a script, and a timeframe. An agent typically is a contact center operator. A skill group is a set of agents that are trained to handle a given script. Call pacing enhancements are implemented to allow simultaneous progress on multiple sub-campaigns under a skill group. The techniques enable control over the pacing of individual sub-campaigns when multiple sub-campaigns are running under a single skill group. The service also provides a framework by which a set of “pluggable” pacing models are provisioned and managed, preferably on a per-model basis.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.14/088,368, filed on Nov. 23, 2013, which is a continuation of U.S.patent application Ser. No. 12/629,298, filed on Dec. 2, 2009, now U.S.Pat. No. 8,594,312, the disclosures of which are hereby incorporated byreference in their entireties.

BACKGROUND

1. Technical Field

This disclosure relates generally to a method and system for managinginteractive communication campaigns over a computer network, such as theInternet.

2. Description of the Related Art

It is known to provide a web-based hosted solution through whichbusiness entities create and manage interactive or notificationcommunications campaigns. An example of an interactive communicationscampaign is a telephone campaign to determine whether a target recipientdesires to transfer a credit card balance to a new account, a campaignto remind a recipient that a credit card payment is due and to offer therecipient an opportunity to speak with a customer representativeconcerning any payment issues, or the like. The hosted solutiontypically is implemented as an application (or “managed”) serviceprovider. One or more business entities (“clients”) that desire to usethe service typically register and access the service through an on-line(e.g., web-based) portal. In one representative use scenario, themanaged service provider entity provides outbound telemarketing serviceson behalf of participating clients. The campaign typically isprovisioned by the client. Thus, for example, using a web-basedinterface, a participating client defines a script for the campaign,imports a set of contacts, and defines one or more parameters thatgovern how the campaign is to be run. At a designated time, the serviceprovider initiates the campaign, e.g., by providing the contacts to aset of telephone servers that set-up and manage the telephone calls tothe targets of the campaign. During a given outbound call, as notedabove, a recipient (a “customer”) may be afforded an option to connectto a contact center, e.g., to speak to a customer representative. Insuch implementations, the hosted solution typically is integrateddirectly with the contact center's on-premises automatic calldistributor (ACD).

BRIEF SUMMARY

A web-based hosted solution (a managed service or system) through whichbusiness entities create and manage communications campaigns, such asinteractive campaigns that afford target recipients an opportunity to beconnected to a contact center. The managed service carries out acommunications campaign on behalf of a client. A “campaign” refers to aseries of messages to a contact list using one or more sub-campaigns. Asub-campaign associates a list of contacts, a script, and a timeframe.An “agent” typically is a contact center operator. A “skill group” is aset of agents that are trained to handle a given script. Call pacingenhancements are implemented to allow simultaneous progress on multiplesub-campaigns under a skill group. The techniques enable control overthe pacing of individual sub-campaigns when multiple sub-campaigns arerunning under a single skill group.

According to another feature, the service provides a framework by whicha set of “pluggable” pacing models are provisioned and managed,preferably on a per-model basis. In this manner, new pacing models(implemented, for example, as Java fragments or JavaScript, or the like)are designed, configured and then added into the system on an as-neededbasis. A particular pacing model (or set of models) may operateirrespective of the one or more channels that are being implementedwithin the campaign or sub-campaigns. The pluggable framework providesthe service provider or its users the ability to design, provision,configure, manage and enforce one or more pacing models for a particularcampaign or set of sub-campaigns as is necessary to meet a givenbusiness objective or policy.

The foregoing has outlined some of the more pertinent features of thesubject matter. These features should be construed to be merelyillustrative. Many other beneficial results can be attained by applyingthe disclosed subject matter in a different manner or by modifying thesubject matter as will be described.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of a service provider infrastructure forimplementing a managed communications campaign service;

FIGS. 2A-2B illustrates how an interactive communications campaign iscreated and managed in the service provider infrastructure illustratedin FIG. 1;

FIG. 3A-3E illustrates various examples of how agents are distributedacross a pair of sub-campaigns using priorities according to the subjectdisclosure;

FIG. 4 is a display interface by which the user can adjust the messagevolume for a given skill group and sub-campaign;

FIG. 5 is a display interface by which the user can edit thesub-campaign priority (pacing);

FIG. 6 is a display interface by which the user can edit the futurepacing model for a given skill group; and

FIG. 7 is a display interface by which the user can edit the pacingattributes of a given sub-campaign.

DETAILED DESCRIPTION

FIG. 1 illustrates a representative service provider or systemarchitecture, which in the preferred embodiment is implemented in oracross one or more data centers. A data center typically hasconnectivity to the Internet. The system provides a web-based hostedsolution through which business entities create and managecommunications campaigns. Campaigns may be interactive ornon-interactive. Representative campaigns include, without limitation,account renewal campaigns, balance transfer or consolidation offercampaigns, billing issue campaigns, credit card activation campaigns,fraud alert campaigns, payment or past due reminder campaigns, phone orcustomer survey campaigns, debt recovery campaigns, late payment withright party verification campaigns, payment reminder with direct connectto contact center campaigns, appointment reminder campaigns, welcomecampaigns, account renewal campaigns, affinity cross-sell/rewardsprogram campaigns, crisis management/disaster recovery campaigns, newproduct offer campaigns, inquiry/web follow-up campaigns, contractrenewal campaigns, service availability notification campaigns,promotional offer campaigns, service delivery confirmation campaigns,and the like. The particular type of campaign is not a limitation orfeature of the invention.

A business entity (a “client”) user has a machine such as a workstationor notebook computer. Typically, a business entity user accesses theservice provider architecture by opening a web browser on the machine toa URL associated with a service provider domain. Access may also bethrough an automated process, such as via a Web services applicationprogramming interface (API). Where a web browser is used, the clientauthenticates to the managed service in the usual manner, e.g., by entryof a username and password. The connection between the business entitymachine and the service provider infrastructure may be encrypted orotherwise secure, e.g., via SSL, or the like. Although connectivity viathe publicly-routed Internet is typical, the business entity may connectto the service provider infrastructure over any local area, wide area,wireless, wired, private or other dedicated network. As seen in FIG. 1,the service provider architecture 100 comprises an IP switch 102, a setof one or more web server machines 104, a set of one more applicationserver machines 106, a database management system 108, and a set of oneor more telephony server machines 110. A representative web servermachine 104 comprises commodity hardware (e.g., Intel-based), anoperating system such as Linux, and a web server such as Apache 2.x. Arepresentative application server machine 106 comprises commodityhardware, Linux, and an application server such as Oracle WebLogic 10.3(or later). The database management system 108 may be implemented as anOracle (or equivalent) database management package running on Linux. Arepresentative telephony server machine is an application server thatimplements appropriate software applications for call set-up, voiceprocessing, and other call connection and management activities. Anapplication may implement the Media Resource Control Protocol (MRCP). Inthe alternative, a telephony server machine may execute an applicationserver in conjunction with one or more PSTN, VoIP and/or voiceprocessing cards that provide interconnectivity for telephone-basedcalling applications. Typically, a voice processing application port orcard has a finite number of supported ports. In a high volume callenvironment, there may be several web server machines, severalapplication server machines, and a large number of telephony servermachines. Although not shown in detail, the infrastructure may include aname service, FTP servers, MRCP (Media Resource Control Protocol)servers, load balancing appliances, other switches, and the like. Eachmachine typically comprises sufficient disk and memory, as well as inputand output devices. The software environment on each machine includes aJava virtual machine (JVM) if control programs are written in Java.Generally, the web servers 104 handle incoming business entityprovisioning requests, and they export a management interface that isdescribed in more detail below. The application servers 106 manage thebasic functions of generating campaign scripts, managing contacts, andexecuting campaigns. The telephony servers 110 handle mosttelephony-related functions including, without limitation, executingoutbound calls and forwarding calls to a contact center. The particularhardware and software implementation details described herein are merelyfor illustrative purposes are not meant to limit the scope of thepresent invention.

In a representative embodiment, a typical machine in the serviceinfrastructure is a processor-based server running Linux, and the serverincludes a telephone interface. A typical interface has up to 240 ports,and each port may be considered a separate telephone line. There aretypically a set of such servers operating at a given location (e.g., anInternet data center). The following is a typical operation of theservice. Using a Web browser or the Web service API, a client provisionsa campaign, provisioning a script to be played to a target customer. Thescope and content of the script will depend on the campaign. The clientalso provides the service provider with contact information for a set ofpersons, who are the target recipients of the campaign. In operation,the system batches a subset of those contacts to one of the machines inthe server farm. A control routine executing on the machine takes afirst contact in the subset and assigns the contact to an availableport. The script is then initiated and the interface card initiates acall over a port. When the recipient's phone is answered, the systemdetermines whether a human being has answered the call (as opposed to ananswering machine, a fax, or the like). If a human being has answered,the script plays a set of prompts (basically a set of scriptedquestions). During the call, if the target recipient takes a givenaction, a direct connect (DC) function is initiated. In particular, thesystem places the call on hold, opens up a separate line to a contactcenter telephone number (typically provisioned by the client), waits foran agent to respond, places the responding agent on hold, and thenbridges the customer to the agent. The system then disconnects. In analternative, the DC function may take place whether or not the recipientactively initiates it, e.g., by just having the system inform therecipient to “please hold” while the connection to the contact center isestablished by the service provider.

The contact center may be owned, operated or managed by a third party.The service provider may manage the agents directly. A representativecontact center includes automatic call distribution (ACD) functions. Asis well-known, an ACD is a computer-implemented and controlled telephonesystem that distributes calls to contact center agents equitably andgathers statistics about the agents. When the service provider controlsand/or manages the agents directly, the provider infrastructure mayinclude a dialer, which is an automatic telephone dialing system. Adialer initiates outbound call from a list of telephone numbers, turns acall over to an agent when a human being responds, and gathersstatistics about agents. Such ACD and dialer technologies arewell-known.

Using the service provider infrastructure, a business entity can create,execute and manage a campaign. As noted above, a campaign may haveassociated therewith one or more “sub-campaigns.” Using a Web interface,a client loads a list of contacts who will be called and associates thatlist with a script. A “sub-campaign” refers to one or more passesthrough a contact list that has been bound to a script and that has beenassociated with a given timeframe. Thus, a “sub-campaign” associates atleast the following items: a list of contacts, a script, and atimeframe. Additional details regarding sub-campaigns are set forthbelow. As noted above, a script determines what will happen during aphone call. Typically, a script is formatted as XML and specifies asequence of audio prompts that are played and what happens when therecipient takes certain actions such as pressing a button on the phoneor speaking a response. As noted above, a direct connect to the contactcenter may be carried out automatically (merely when the systemdetermines that the call has been answered by other than an answeringmachine) and thus the script may designate this functionality. One ormore contact lists are stored in a contact database, and typically acontact list comprises a set of contacts. A contact typically is anindividual in the contact database, and this individual is sometimesreferred to as the “customer” (as, technically, the individual is acustomer of the client using the managed service). A contact can includehome, work or cell numbers, a client identifier, an email address, orthe like. Also, contacts typically include first name, last name,company and other information. With reference to FIGS. 2A-2B, and asdescribed above, a business entity connects to the service provider,authenticates, and then uses one or more applications to create, executeand manage the campaign. These applications execute on the applicationserver machines and operate in association with one or more databasesthat are supported within the database management system. Theseapplications include, for example, a contact management application 202,a campaign management engine 204, a scheduling engine 206, and ascripting engine 208. The contact management application 202 handles thereceipt and storage of the contact list(s) uploaded (e.g., via FTP orotherwise) to the system by or on behalf of the business entity client.The scripting engine 208 handles the creation and managing of thecampaign scripts, using instructions entered by or on behalf of thebusiness entity client via a web-based interface or Web services API.The campaign management engine 204 manages the campaign byinteroperating with the scheduling engine 206, which in turninteroperates with the telephony servers 205 to execute the campaign.The business entity client evaluates or monitors the campaign fromsummary, detail and/or custom reports generated by a reporting engineapplication 210. Campaign evaluation and monitoring may also beperformed via a Web-based user interface, or in an automated manner viaan API. Notification campaigns are executed using email servers 212 andSMS (or MMS) servers 214, or by other means, such as by telephone.

As also illustrated in s 2A-2B, after connecting an outbound call to atarget customer 216, the customer may elect to be connected to thecontact center 218 (typically a third party contact center) or thesystem may perform that direct connect automatically once it determinesthat a human being (as opposed to an answering machine) has answered theoutbound call. The system typically obtains information about thecontact center's performance during a given communications campaign,commonly without requiring a direct connection between theinfrastructure and a contact center's on-premises ACD. This enables themanaged service provider to integrate with both its business entityclients and with their associated contact center environments rapidlyand efficiently. The interconnectivity between the managed serviceprovider and the contact center may be “inferred” from how calls thatoriginate from the service provider to the target recipients (who haveexpressed an interest in being connected to the contact center) areactually handled. This “indirect” connectivity is illustrated in FIG. 2by the control engine 220, which can be provided in software as a set ofsoftware instructions executable on a processor. The engine isresponsible for dispatching messages at an appropriate rate whileensuring that all customer-requested rule parameters (as describedbelow) are honored. Examples of such parameters include: number ofagents available at the contact center, maximum hold time at the contactcenter, client abandon rate prior to speaking to a contact center,number of bad numbers reached on the outbound dial, and so forth.Generally, for a given client campaign or sub-campaign, the engine 220decides on an initial message dispatch rate based on theclient-requested parameters (and, optionally, on historical data fromlike campaigns or sub-campaigns). Once the campaign or sub-campaign, asthe case may be, starts running, the engine 220 monitors the parametersand ensures that they remain within tolerance. If an identifiedparameter exceeds the client-defined value, then a system action rule(e.g., adjusting the message dispatch rate, suspending the sub-campaign,or the like) is applied and any client notification requested is issued.Additional details regarding the functionality of the engine 220 aredescribed in U.S. Publication No. 2007/0172050, which is commonly-owned.

As noted above, preferably a web-based interface is provided to enable abusiness entity client to create a set of one or more management rulesthat, when triggered during the campaign, cause the infrastructure (and,in particular, certain control applications therein) to take certaincontrol actions in real-time, preferably based on campaign performance.A campaign may include several preset strategies that a client maychoose to change based on day of week or time of day.

As used herein, the following terms have the associated meanings. A“campaign” refers to an overall series of messages to a contact listusing one or more sub-campaigns that use a given script. Campaigns alsoact as templates for the sub-campaigns that are created under them. Acampaign typically has a preset configuration that applies to all of itssub-campaigns. As noted above, a “sub-campaign” refers to one or morepasses through a contact list using a script and that is constrained toa particular timeframe (or at a set of one or more such times). Asub-campaign typically runs under an existing campaign. A “script” asnoted above determines what happens during a customer interaction.Commonly, the script specifies a sequence of audio prompts that areplayed to a client (an end user who receives a call) and what happens(the contact center connection) when the recipient takes certain actions(such as pressing a button on the phone or speaking an answer to aquery). The script may also specify other actions, such as effecting acontact center connection automatically when detecting that a humanbeing has answered. The nature and type of actions set forth in a scriptthus may be quite varied, and this disclosure is not limited to anyparticular process flow within a script.

An “agent” typically is a contact center operator. A “skill group” is aset of agents that are trained to handle a given script. In oneembodiment, a skill group defines the number of agents who are scheduledto be on duty at various times of the day on various days of the week,as well as the phone number to use to contact those agents. A skillgroup can be shared across multiple sub-campaigns or over multiplephysical facilities (e.g., telephone numbers). A script may cause therouting of direct connect calls to different skill groups based on thepath through the script. A client of the service may assign a skillgroup to a sub-campaign when it creates the sub-campaign, whereupon theagents in that skill group are then responsible for handling anyincoming messages for that sub-campaign. Agents in a skill group become“live” according to a schedule or upon login to the service provider.Thus, in one embodiment a “live” agent is an agent that has beenregistered with the service provider, e.g., using a supervisor dashboardor a contact center schedule. A “busy” agent is an agent currentlyassisting a client. An “available” agent is an agent waiting for work. A“break” is a state when the agent is away from his or her station. Theacronym “ACW” refers to “after-call-work” or agent processing, whichoccurs after a particular customer service is completed and before theagent is servicing a new customer.

In one embodiment, agents in a skill group may be automaticallyallocated to a particular sub-campaign based on a priority of eachrunning sub-campaign. This is not a requirement, however. Thus, forexample, sub-campaigns with a higher priority are given as many agentsas they can use before a lower-priority sub-campaign is considered.Sub-campaigns of equal priority are allocated agents according to anumber of agents that can be used (or the number of available contacts)in a next time period (e.g., 5 minutes). In the alternative, suchprioritization of sub-campaigns need not be enforced across agents in askill group, thereby enabling more equal access to the agents. Theagents allocated to each sub-campaign typically changes over time as thenumber of available contacts changes (which affects the number of agentsthat can be used by each sub-campaign). Preferably, the system adjuststhe rate for a sub-campaign based on several factors: the number ofagents currently utilized by the sub-campaign, the percentage ofattempts that result in a direct-connect attempt, and an average lengthof a successful direct connect call.

As noted above, agent allocation is not a requirement. In thealternative, agents in a skill group are either assisting a client orare idle. They may receive work from any sub-campaign currently assignedto the skill group. In this embodiment, a priority value determines if aparticular sub-campaign should be dialed at a faster rate than another.This results in one sub-campaign generating more direct-connects andrequiring more agents from the pool of available agents.

Typically, a skill group is based on one or more business requirements.For example, skill groups may be based on skill type, language skills,skill level, or other such factors. When a new sub-campaign is created,a skill group is assigned to that sub-campaign. The schedule for theskill group then determines the messaging rate at any given time. Asmore agents come on duty, typically the rate increases to keep thoseagents busy. When fewer agents are on duty, however, the rate decreasesto avoid long hold queues for the customers. As noted above, a singleskill group can be assigned to multiple sub-campaigns at the same time.Calls from each sub-campaign preferably are sent to any available agentin the skill group, so a given agent should be trained to handle workfrom each of the sub-campaigns.

There may be different types of skill groups, such as a standard skillgroup, and an enhanced agent mode skill group. The standard skill grouptypically is a skill group to which a single phone number is assigned,and that number is a default phone number when there is no other numberdefined in the script. A standard skill group typically does not use aservice-side hold queue, as defined below. With a standard skill group,agents always hang up after the client call has completed. Caller ID canbe used to generate an agent screen pop-up window with the correctcustomer information if the client's infrastructure supports thecapability. As an alternative, an audible “whisper” with customerinformation can be played for the agent prior to completing theconnection. Agents may take advantage of a service-side hold queue to“stay-on-line” (remain connected and to receive a next customer afterthe last customer hangs-up). If agents remain connected, caller IDtypically is not used for the screen pop-up because, typically, callerID cannot be changed after the first call the agent's phone has beenplaced. If the enhanced agent mode skill group mode is used, contactsconnect directly to a specific agent who has his or her own uniquetelephone number. Thus, when this type of skill group is configured,individual agents are added (by name) together with the associatedtelephone numbers. In this configuration, each agent has a unique phonenumber, or each agent may be set up with a different extension where oneor more agents share the unique phone number. As with the standard modeconfiguration, agent mode skill groups use a pre-defined schedule.Individual agents, however, can each have a custom schedule or canparticipate in a common schedule group. The service provider can trackindividual agent activity in this mode, and agents use the hold queueand can stay-on-line as described above. In this mode, caller ID is notused for an agent screen pop-up window, and agents who are not activelyallocated to a running sub-campaign are identified as unassigned.

Pacing Enhancements

The following definitions apply to various pacing enhancements that aredescribed below.

As used herein, “priority” refers to a weight that is assigned to eachsub-campaign indicating if that sub-campaign should be called at agreater or lesser rate than other sub-campaigns in the skill group.

An “intensity” refers to an adjustment that can be made to the rate ofan individual sub-campaign or all sub-campaigns under a given skillgroup.

By way of further background, when an agent is made available to a skillgroup, a “pre-allocation” may refer to the situation where the agent isallocated to a specific sub-campaign and remains there until there isnot enough work to support that agent; pacing for the sub-campaign isthen based on how many agents have been pre-allocated. Agents, as willbe seen, need not be pre-allocated or even allocated.

The term “just-in-time allocation” refers to the situation where acalling rate for each sub-campaign is determined by looking at arequested number of agents for a given skill group; just-in-timeallocation is designed to keep a portion of those agents busy. Withjust-in-time allocation, when a direct connect is made, the agent usedis taken from the available pool and then returned to the pool when thedirect connect is finished.

A “running pass” refers to a pass that is part of a resumed sub-campaignand is within a specified calling time. Thus, e.g., if it is currently 9AM and a pass is set to run from 1 PM-4 PM, that pass is not running,even if the sub-campaign it is currently part of is not paused.

As described herein, call pacing enhancements include just-in-time agentallocation (as opposed to pre-allocation), as well as simultaneousprogress on sub-campaigns running under a same skill group. In addition,the system provides for user control over a priority of individualsub-campaigns, therefore allowing for control over the distribution ofwork among sub-campaigns running the same skill group. In addition, thisdisclosure describes improvements to the agent pacing model, with a goalof more closely matching requested number of contacts to the contactcenter.

Just-in-time agent allocation as provided herein allows for asignificant change in the way that resources are used acrosssub-campaigns in the same skill group. The following describes a varietyof scenarios as well as how resources are used in each case.

A basic process for determining messages per minute for eachsub-campaign is as follows. First, the application (e.g., schedulingengine 206) looks at the number of agents that have been requested forthe skill group by the user. Second, the application offers use of allor a portion of those agents to the passes in each sub-campaign underthe skill group. Division of the offer is based on the number of runningpasses in each sub-campaign. The sub-campaign passes preferably maketheir own usage projections. Thus, for example, if the pass isconstrained by time zone or limited records to be dialed, it projectsuse of a smaller number of agents, and vice versa. Then, messaging foreach pass is set at a rate intended to keep busy either the number ofagents projected by the pass or the number of agents offered to thepass, whichever is smaller. If a given pass will not use all the agentsoffered to it, those agents can be offered to a pass that had previouslybeen offered less agents than it had projected it would use. Theabove-identified process steps are repeated periodically (e.g., once perminute) and/or as a result of certain actions, such as a newsub-campaign being started, or a sub-campaign being paused.

Preferably, sub-campaign projections are based on one or more datasources: system defaults, “cousin” data, or sub-campaigns that have runin the same campaign, averages from a currently running sub-campaign,and activity in the sub-campaign over a given period (e.g., the last 15minutes).

The following examples demonstrate how agents will be used if allsub-campaigns are running with equal priority and no adjustments tointensity. The number of agents is set at the skill group. The generalrule is that, assuming equal priorities, agents are initially offered inequal proportion to all currently running passes under a given skillgroup. The calculation for any given pass is then 100%/number ofcurrently running passes.

Thus, for a single sub-campaign with a single pass, the sub-campaign'ssingle pass will be offered all available agents.

For two or more sub-campaigns with single passes, the agents will beoffered equally across the passes.

For a single sub-campaign with multiple passes that do not runconcurrently, each pass will be offered all available agents while it isrunning. For example, if pass 1 runs from 9 AM-12 PM and pass 2 runsfrom 7 PM-9 PM, pass 1 will be offered all agents while it runs and thenpass will be offered all agents while it runs.

For a single sub-campaign with multiple passes that run concurrently,agents will be offered equally between them. For example, if pass 1calls device 1 between 8 AM and 12 PM and pass 2 calls device 2 between8 AM and 12 PM, each pass will be offered 50% of the agents. Becausepass 2 will be quickly drained of accounts as they flow slowly from pass1 into pass 2, pass 2 will likely not project a need for as many agentsas it is being offered. As the application adjusts periodically (e.g.,each minute), the likely result is that pass 1 will be offered a largerpercentage of the agents.

For two or more sub-campaigns with multiple passes that do not runconcurrently, each running pass will be offered an equal number ofagents.

For two or more sub-campaigns with a mixture of passes that are runningconcurrently, each running pass will be offered an equal number ofagents. For example, if sub-campaign 1 has 2 concurrently running passesand sub-campaign 2 has 1 pass that is currently running, each pass willbe initially offered ⅓ of the agents. Again, if one of the passes doesnot project use of all the agents it is being offered, unused agentswill be redistributed equally to passes whose projected use is greaterthan the application initially offered.

As noted above, priority allows the user to put a relative weight on anypass (or all passes for a sub-campaign) that can influence theapplication to offer a greater number of agents to that pass. Theapplication allows for varied levels of priority, each with anassociated weight that is then used to calculate the offered number ofagents. In one embodiment, there are five (5) levels of priority, butthis is not a limitation: (1) mandatory (weight=10), (2) high(weight=4), (3) medium (weight=2), (4) low (weight=1), and background(weight=0). Of course, the values of the above-identified weights can bevaried. The percent distribution for a given running pass is thencalculated as follows: (weight of pass/sum of weight of all runningpasses)×100. For example, if one pass is set to a “high” priority andanother is set to a “low” priority, the weight of the “high” pass is 4and the total weight of all running passes is (4+1) or 5. The percentdistribution for the high pass will then be (⅚)×100, or 80%. This willbe the initial offer presented to the pass in this example. Typically,passes set to “background” will not be offered any agents unless thereare no other running passes with higher priorities or all other runningpasses project using fewer agents than they are being offered.

The following examples demonstrate how agents may be used ifsub-campaigns or passes are set to differing priorities.

Where there are multiple sub-campaigns with the same number of passesand different priorities, preferably priority is set at a sub-campaignlevel using a user interface (UI) or other management interface orfunction. Priority also may be set at the pass level. FIG. 3Aillustrates a representative calculation and allocation multiplesub-campaigns with the same number of passes and different priorities(e.g., high and medium). FIG. 3B illustrates a representativecalculation and allocation for a pair of sub-campaigns each with thesame number of passes and different priorities but where not all passesare running. FIG. 3C illustrates a representative calculation andallocation for the pair of sub-campaigns, where the sub-campaigns havediffering numbers of passes and different priorities, but with allpasses running. FIG. 3D illustrates a representative calculation andallocation for the pair of sub-campaigns, where the sub-campaigns havediffering numbers of passes and different priorities, but with not allpasses running. FIG. 3E illustrates a representative calculation andallocation for multiple sub-campaigns with different numbers of passesand different priorities, and where one pass is set to “background.”

The pacing enhancements herein also include the ability for the user toperform intensity adjustments. Thus, if a user finds that a currentmessaging rate is not resulting in an expected number of directconnects, the user may wish to influence the rate either higher orlower. The application allows for increasing or decreasing the rate atthe sub-campaign or skill group level, as is now described. Adjustmentsat either level may be limited to a range (e.g., −100% to +200%), butthis is not a limitation. Preferably, adjustments may be made ingradations, e.g., 10%, but this is also not a limitation.

The effects on rate depend on where the adjustment is made. If theadjustment is made at a sub-campaign level, the specified percentageadjustment is applied to the rate per minute on all passes in thesub-campaign. For example, if pass 1 of a sub-campaign is currentlyrunning at 100 messages per minute, an adjustment of +10% volume on thesub-campaign causes the rate on pass 1 to increase to 110 messages perminute (an increase of 10%). Additional adjustments are made based onthe application's target rate; thus, a later increase to 20% would bebased on the rate of 100, not 110.

If the adjustment is made at the skill group level, the specifiedpercentage adjustment (up or down) is applied to the rate per minute onall passes in all sub-campaigns under the skill group. For example, ifthere are 2 sub-campaigns running in a skill group, each with a singlepass running at 100 per minute, and the volume on the skill group isincreased 10%, both passes increase to a rate of 110 messages perminute.

If the adjustment is made at both the skill group and the sub-campaignlevel, the effect on the calling rate is found by multiplying the twoadjustments. For example, if a +10% adjustment is made at the skillgroup level and a corresponding +10% is made at the sub-campaign level,the overall effect on the sub-campaign is +21% (1.10×1.10=1.21). For apass running at 100 messages per minute, this represents a change to 121messages per minute. If, however, a −10% adjustment is made on thesub-campaign and a +10 adjustment is made at the skill group level, theoverall effect on the sub-campaign is −1% (0.9×1.10=0.99). For a passrunning at 100 messages per minute, this represents a change to 99messages per minute. Of course, the above examples are merely exemplary.

Preferably, adjusting the intensity does not affect the number of agentsoffered to a pass.

Although any convenient technique may be used, a user interface is usedto adjust the intensity. Preferably, each skill group and sub-campaignincludes a control for increasing or decreasing the intensity. This canbe done by selecting the control, making the adjustment, and then savingthe selection. Preferably, each sub-campaign and pass includes a controlfor adjusting priority. Selecting a priority control opens a dialog thatshows priority for all sub-campaigns in the skill group, and each can beadjusted prior to saving changes or canceling the action. If thepriority of a sub-campaign is changed, preferably the same priority iscopied to all passes in that sub-campaign. The effects of prioritypreferably are then represented on screen by an associated percentage ofagents offered, such as illustrated in FIGS. 3A-3E. These percentageschange if changes to the priorities are made. If desired, the UI mayexpose an advanced management dialog. Once selected, the dialog screenshows all sub-campaigns in a skill group and allows al of the agent,call volume and priority adjustments to be made in one place.

This disclosure provides numerous advantages. Using the describedinvention, agents avoid ending up in a “pending” state, such as occurswith pre-allocation where another sub-campaign is using all agents or asub-campaign is waiting for a next time zone to become available forcalling. In addition, with prior techniques, agents may sometimes beallocated in such a way that a largest sub-campaign gets all resourcesin a skill group, leaving any other sub-campaign to wait for resourcesto free up. If the large sub-campaign is sufficiently large, it may meanthat less progress is made on other sub-campaigns, but this issue isameliorated by the techniques disclosed herein. In addition, in knowntechniques it has not been possible to force agents to be allocated toanother sub-campaign in a same skill group; the subject inventionenables distribution of agents to be influenced and managed effectively.Further, in the prior art call volume typically is increased in only oneof two ways—increasing the number of agents, or increasing a utilizationrate. The techniques described herein enable intensity to be controlled(increased or decreased) more dynamically and efficiently. The presentinvention also enables the system to provide a user prompt and usefulfeedback when changes are made to the agent number of utilizationpercentage.

By dynamically allocating agents based on priority of the sub-campaignand/or by using a volume control to adjust the call rate at the skillgroup and/or sub-campaign level, the application progresses on multiplesub-campaigns at once. As much as possible, individual agents areneither over-utilized nor under-utilized. These techniques help ensurethat a given contact list is finished by a certain time, and enable theapplication to maintain desired service levels. By setting priority ofthe sub-campaign (the passes), the system automatically accommodates forchanges in the total agent pool. In addition, the system can performjust-in-time agent allocation accurately and when required. This enablesappropriate agent allocation adjustment for inbound traffic, andappropriate sub-campaign/call pass priority propagation.

Using a simple UI or other control interface, the user can quicklyadjust volume targets and define the agent pool (skill groups) and thecampaign specifics.

Thus, for example, FIG. 4 is a display interface by which the user canadjust the volume for a given skill group and sub-campaign.

FIG. 5 is a display interface by which the user can edit thesub-campaign priority for an agent pacing model (as defined below).

FIG. 6 is a display interface by which the user can edit the futurepacing model for a given skill group.

FIG. 7 is a display interface by which the user can edit the pacingattributes of a given sub-campaign.

The illustrated display interfaces enable user control over the priorityof individual sub-campaigns, therefore allowing for control over thedistribution of messaging among sub-campaigns running under the sameskill group. The interface enables quick access to adjustments ofmessage volume, as well as a visual indication of the impact of aparticular adjustment.

A particular campaign may involve multiple channels of communicationsuch as voice, text, email, AVM, and so forth. Thus, the techniques ofpacing individual sub-campaigns as described above may be applied tosub-campaigns involving in such a multi-channel campaign so that thebenefits described (e.g., making concurrent progress on the multiplesub-campaigns) can also be achieved for the multi-channelimplementation. Stated another way, the pacing enhancements describedherein are not limited to single channel campaigns but apply as well tocampaigns that span multiple communications channels. As an example, amulti-channel campaign may involve a voice pass and a text pass. Usingthe techniques described herein, one or both of the rates of thosesub-campaigns may then be adjusted, e.g., the rate of the text-basedcampaign may be adjusted based on agent utilization (driven, e.g., byCTI data).

According to another aspect of this disclosure, the particular pacingalgorithm implemented need not take channels into consideration at all.In this approach, the pacing algorithm, in effect, is blind to whether asingle channel or multi-channel implementations are being carried outwith respect to the campaign (or sub-campaign). In this approach pacingis performed generically on messages, irrespective of the communicationchannel designation.

Preferably, the system UI exposes to a user a set of “pluggable” pacingmodels that are provisioned and managed, preferably on a per-modelbasis. In this manner, the system provides a framework by which newpacing models (implemented, for example, as Java fragments orJavaScript, or the like) are designed, configured and then added intothe system on an as-needed basis. The detailed discussion above hasreferenced several such models. Thus, for example, a representativesystem may include one or more of the following pacing model types:

-   -   (a) fixed pacing—wherein a given number of messages per time        period are processed;    -   (b) agent-based pacing—wherein a given number of agents are to        be assigned to the campaign or sub-campaign during a given time        period;    -   (c) auto-pacing—wherein a campaign or sub-campaign starts and        end at specified times and a given number of messages must be        communicated during that time;    -   (d) historical pacing—wherein a campaign (e.g., an inbound        campaign) takes into consideration past activity or activity        from third party systems;    -   (e) predictive pacing—wherein a predictive dialer (or the like)        is associated with the campaign or sub-campaign and is being        used to manage the messages.

The above nomenclature for the pacing models is merely exemplary andshould not be taken to limit the disclosure. The particular pacingmodel(s) and their configuration details may be varied within thecontext of the pluggable framework. As noted above, preferably the userinterface exposes controls that are used by the operator to provisionand configure the model. Thus, for example, FIG. 6 includes a right-mostcolumn titled “Pacing” by which the particular model may be associatedwith a particular sub-campaign. FIG. 7 includes a right-most column thatidentifies three (3) different pacing models that can be selectedindividually with respect to identified sub-campaigns. Preferably, whena given number of agents in a skill group are associated with multiplemodels, the fixed and auto-pacing models use those agents on a prioritybasis; whatever remaining agents exist in the skill group may then beallocated to the remaining pacing models.

Thus, a single campaign may comprise multiple sub-campaigns, and eachsub-campaign may be separately provisioned according to a given pacingmodel. As noted above, a particular pacing model (or set of models) mayoperate irrespective of the one or more channels that are beingimplemented within the campaign or sub-campaigns. The pluggableframework provides the service provider or its users the ability todesign, provision, configure, manage and enforce one or more pacingmodels for a particular campaign or set of sub-campaigns as is necessaryto meet a given business objective or policy.

As previously noted, the hardware and software systems in which thesubject matter herein is illustrated are merely representative. Thedescribed functionality may be practiced, typically in software, on oneor more machines. Generalizing, a machine typically comprises commodityhardware and software, storage (e.g., disks, disk arrays, and the like)and memory (RAM, ROM, and the like). The particular machines used in thenetwork are not a limitation. A given machine includes networkinterfaces and software to connect the machine to a network in the usualmanner. As illustrated in FIG. 1, the subject disclosure may beimplemented as a managed service (e.g., in an ASP model) using theillustrated set of machines, which are connected or connectable to oneor more networks. More generally, the service is provided by an operatorusing a set of one or more computing-related entities (systems,machines, processes, programs, libraries, functions, or the like) thattogether facilitate or provide the inventive functionality describedabove. In a typical implementation, the service comprises a set of oneor more computers. A representative machine is a network-based serverrunning commodity (e.g. Pentium-class) hardware, an operating system(e.g., Linux, Windows, OS-X, or the like), an application runtimeenvironment (e.g., Java, .ASP), and a set of applications or processes(e.g., Java applets or servlets, linkable libraries, native code, or thelike, depending on platform), that provide the functionality of a givensystem or subsystem. As described, the service may be implemented in astandalone server, or across a distributed set of machines. Typically, aserver connects to the publicly-routable Internet, a corporate intranet,a private network, or any combination thereof, depending on the desiredimplementation environment.

Having described my invention, what I now claim is set forth below:
 1. Asystem for managing outbound communication campaigns comprising:processor; and memory, wherein the memory stores instructions that, whenexecuted by the processor, cause the processor to: identify a pluralityof sub-campaigns in a particular outbound campaign, wherein each of thesub-campaigns is configured for a particular number of passes; identify,for a first pass of a first one of the plurality of sub-campaigns, anumber of agents offered to the first pass; identify, for the firstpass, a number of agents projected to be used for the first pass; andset the first pass at a rate that is to maintain busy the number ofagents projected to be used for the first pass, or the number of agentsoffered to the first pass, whichever is smaller.
 2. The system of claim1, wherein the instructions further cause the processor to: determinewhether the first pass is anticipated to use all agents offered to thefirst pass; if the first pass is not anticipated to use all the agentsoffered to the first pass, offer an agent of the agents offered to thefirst pass, to a second pass of the first one of the plurality ofsub-campaigns.
 3. The system of claim 1, wherein the identifying of theagents projected to be used for the first pass is based on at least oneof use requirements from another sub-campaign, an average of userequirements from a currently running sub-campaign, or use requirementsas evidenced by recent activity in the sub-campaign for which theprojection is being done.
 4. The system of claim 1, wherein the firstone of the plurality of sub-campaigns is associated with a priority. 5.The system of claim 4, wherein the identifying the number of agentsprojected to be used for the first pass is based on the associatedpriority of the first one of the plurality of sub-campaigns.
 6. Thesystem of claim 1, wherein the identifying the number of agentsprojected to be used for the first pass is based on a number of agentsrequested for a skill group.
 7. The system of claim 1, wherein theidentifying the number of agents projected to be used for the first passis based on the particular number of passes in each sub-campaign.
 8. Thesystem of claim 1, wherein the instructions further cause the processorto: pace individual sub-campaigns of the plurality of sub-campaigns suchthat concurrent progress is made on the plurality of sub-campaigns; andselectively adjust an intensity of a rate of an individual sub-campaignof the plurality of sub-campaigns.
 9. A system for managing outboundcommunication campaigns comprising: processor; and memory, wherein thememory has stored therein instructions that, when executed by theprocessor, cause the processor to: export, as a set of one or more webpages, a call pacing configuration tool, the call pacing configurationtool enabling receipt of data defining a call pacing strategy thatenables control over pacing of individual sub-campaigns when multiplesub-campaigns are running; and execute a communications campaign usingthe call pacing strategy to pace individual sub-campaigns when themultiple sub-campaigns are running.
 10. A system for managing outboundcommunication campaigns comprising: processor; and memory, wherein thememory has stored therein instructions that, when executed by theprocessor, cause the processor to: export, as a set of one or more webpages, a call pacing configuration tool, the call pacing configurationtool enabling receipt of data defining a call pacing strategy thatenables just-in-time agent allocation; and execute a communicationscampaign using the just-in-time agent allocation.